<!--
/*
 *	Author: José Delgado Pérez
 *	Correo: josedelgado@ula.ve
 *	Fecha: 11/02/2012
 *	Encoding: UTF-8
 */
-->

<?php


class AccionProfesor {
	
	#CONSTRUCTOR
	public function __construct() {
	}
	
	#VALIDA LA EXISTENCIA DE UN USUARIO(PROFESOR)CON LOS DATOS SUMINISTRADOS.
	public function autentificarProfesor($cedula, $contraceña){
		$DataBase = BD;
		$sql = "SELECT DISTINCT * FROM profesores WHERE "; 
		$sql = $sql."cedula = '".$cedula."' and clave = '".$contraceña."' ";
		$array = $this->consultar($sql,$DataBase);
		if(!empty($array)){
			$usuario = $array[0];
			$valido = true;
		}else{
			$usuario = Array();
			$valido = false;
		}
		return Array('valido' => $valido, 'usuario' => $usuario);
	}

	#VALIDA QUE LOS CAMPOS ESTEN LLENOS DE MANERA CORRECTA,
	#EN CASO CONTRARIO RETORNA UN FALSE Y UN ERROR,
	#SI LOS CAMPOS ESTAN CORRECTOS, LOS INTRODUCE EN LA BD Y RETORNA TRUE
	public function addMateria($materia, $cedula, $tabla){
		$validacion = $this->validarMateria($materia, $cedula, $tabla);
		if($validacion['paso']){
			foreach($materia AS $clave => $valor)
   				$$clave = $valor;
			$totalHoras = $horasTeorica + $horasPractica + 
			$horasLaboratorio + $horasTaller + $horasConsulta;
			$seccion1 = $porcentaje*(3*$horasTeorica + 2*$horasPractica + 
			2*$horasLaboratorio + $horasTaller + $horasConsulta);
			if($numSecciones == '1'){
				$porcentaje22 = 0;
				$porcentaje33 = 0;
			}elseif($numSecciones == '2'){
				$porcentaje22 = $porcentaje2;
				$porcentaje33 = 0;
			}elseif($numSecciones == '3'){
				$porcentaje22 = $porcentaje2;
				$porcentaje33 = $porcentaje3;
			}
			$seccion2 = $porcentaje22*(2*$horasTeorica + 2*$horasPractica + 
				2*$horasLaboratorio + $horasTaller + $horasConsulta);
			$seccion3 = $porcentaje33*(2*$horasTeorica + 2*$horasPractica + 
			2*$horasLaboratorio + $horasTaller + $horasConsulta);
			$cargaAcademica = $seccion1 + $seccion2 + $seccion3;
			$DataBase = BD;
			$sql = "INSERT INTO " . $tabla .
	               "(nombreMateria, cedulaProfesor, horasTeorica, horasPractica, " .
			       "horasLaboratorio, horasTaller, horasConsulta, totalHoras, " .
			       "porcentaje, porcentaje2, porcentaje3, numSecciones, cargaAcademica)" .
	               " VALUES " .
	               "('".$nombreMateria."', '".$cedula."', ".
				   "'".$horasTeorica."', '".$horasPractica."', '".$horasLaboratorio."', '".$horasTaller."', ".
				   "'".$horasConsulta."', '".$totalHoras."', '".$porcentaje."', ".
			       "'".$porcentaje22."', '".$porcentaje33."', '".$numSecciones."', '".$cargaAcademica."')";
			$this->guardar($DataBase, $sql);
			return Array('insercion' => true);
		}else{
			$msgProceso = $validacion['error'];
			return Array('insercion' => false, 'error' => $msgProceso);
		}		
	}

	#RETORNA TRUE SI TODOS LOS CAMPOS ESTAN LLENOS Y SON CORRECTOS.
	private function validarMateria($materia, $cedula, $tabla){
		$campos = Array( '02'=>'horasTeorica',
                    	 '03'=>'horasPractica',
                    	 '04'=>'horasLaboratorio',
                    	 '05'=>'horasTaller',
                    	 '06'=>'horasConsulta',
                         '07'=>'numSecciones'
                   );
        if(empty($materia['nombreMateria'])){ 
        	$msgProceso = "No lleno la totalidad de los campos.";
        	return Array('paso' => false, 'error' => $msgProceso);
        }
        foreach($campos AS $clave => $valor) {
			if($materia[$valor] == "" || (!is_numeric($materia[$valor])) ){
				$msgProceso = "No lleno la totalidad de los campos.";
				return Array('paso' => false, 'error' => $msgProceso);
			}	
		}
		if($this->validadMateriaBD($materia['nombreMateria'], $cedula, $tabla) == false){
			$msgProceso = "La materia ya esta insertada.";
			return Array('paso' => false, 'error' => $msgProceso);
		}
		return Array('paso' => true);
	}
			
	#VERIFICA SI EXISTE UNA MATERIA CON EL MISMO NOMBRE ASOCIADA A ESTE PROFESOR
	public function validadMateriaBD($materia,$cedula,$tabla){
		$DataBase = BD;
		$sql = "SELECT DISTINCT * FROM " . $tabla . " WHERE "; 
		$sql = $sql."cedulaProfesor = '".$cedula."' and nombreMateria = '".$materia."' ";
		$array = $this->consultar($sql,$DataBase);
		if(!empty($array)){
			return false;
		}else{
			return true;
		}
	}
		
	#VALIDA QUE LOS CAMPOS ESTEN LLENOS DE MANERA CORRECTA,
	#EN CASO CONTRARIO RETORNA UN FALSE Y UN ERROR,
	#SI LOS CAMPOS ESTAN CORRECTOS, LOS INTRODUCE EN LA BD Y RETORNA TRUE
	public function addTutoria($tutoria, $cedula, $tabla){
		$validacion = $this->validarTutoria($tutoria, $cedula, $tabla);
		if($validacion['paso']){
			$DataBase = BD;
			foreach($tutoria AS $clave => $valor)
   				$$clave = $valor;
   			$anio = "0000";
   			$mes = "00";
   			$dia = "00";
   			if($fecha1 !== "") $fecha1A = date($fecha1); else $fecha1A = date("$anio/$mes/$dia");
			if($fecha2 !== "") $fecha2A = date($fecha1); else $fecha2A = date("$anio/$mes/$dia");
			if($fechaFinal !== "") $fecha3A = date($fecha1); else $fecha3A = date("$anio/$mes/$dia");
			$sql = "INSERT INTO " . $tabla .
	               "(cedulaProfesor, cedulaTesista, nombreTesista, nombreTutor, " .
			       "nombreTutorExterno, tituloTrabajo, fechaA1, fechaA2, " .
			       "fechaA3)" .
	               " VALUES " .
	               "('".$cedula."', '".$numIdentificacion."', ".
				   "'".$nombres."', '".$tutor."', ".
				   "'".$tutorExterno."', '".$tituloDelTrabajo."', ".
				   "'".$fecha1A."', '".$fecha2A."', '".$fecha3A."')";
			$this->guardar($DataBase, $sql);
			return Array('insercion' => true);
		}else{
			$msgProceso = $validacion['error'];
			return Array('insercion' => false, 'error' => $msgProceso);
		}		
	}
		
	#RETORNA TRUE SI TODOS LOS CAMPOS ESTAN LLENOS Y SON CORRECTOS.
	private function validarTutoria($tutoria, $cedula, $tabla){
		$campos = Array( '01'=>'numIdentificacion',
                    	 '02'=>'nombres',
                    	 '03'=>'tituloDelTrabajo',
                    	 '04'=>'tutor',
                   );
        foreach($campos AS $clave => $valor) {
			if($tutoria[$valor] == ""){
				$msgProceso = "No lleno la totalidad de los campos.";
				return Array('paso' => false, 'error' => $msgProceso);
			}	
		}
		if($this->validadTutoriaBD($tutoria['numIdentificacion'], $cedula, $tabla) == false){
			$msgProceso = "La tutoria ya esta insertada.";
			return Array('paso' => false, 'error' => $msgProceso);
		}
		return Array('paso' => true);
	}
	
	#VERIFICA SI EXISTE LA TUTORIA EN LA BD
	public function validadTutoriaBD($cedulaTesista,$cedula,$tabla){
		$DataBase = BD;
		$sql = "SELECT DISTINCT * FROM " . $tabla . " WHERE "; 
		$sql = $sql."cedulaProfesor = '".$cedula."' and cedulaTesista = '".$cedulaTesista."' ";
		$array = $this->consultar($sql,$DataBase);
		if(!empty($array)){
			return false;
		}else{
			return true;
		}
	}
	
	#GENERA UN ARCHIVO EXTECION TEX (ARCHIVO LATEX) QUE CUMPLE CON LA GRAMATICA 
	#XML DEFINIDA,  COMPLETA LOS CAMPOS BASIOS DE LA GRAMATICA CON EL CONTENIDO 
	#DEL OBJETO CORRESPONDIETE "PROFESOR" GENERANDO EL ARCHIVO TEX DEFINITIVO 
	#QUE CONTIENE LA INFORMACION Y LA ESTRUCTURA DEL REPORTE FINAL
	public function generar_latex($cedula) {
		$profesor = new Profesor($cedula);
		$latex = new Latex();
		$latex->extraerLatex();
		$latex->llenarLatex($profesor);
		$nombreArchivo = $cedula;
		$this->generarArchivoLatex($latex, $nombreArchivo);
		return	 $nombreArchivo;
	}
	
	#CONVIERTE DE UFT-8 A ISO-8859-1
	public function toISO($cadena) {
		//convierte de UTF-8 a ISO-8859-1 
		$cadena = mb_convert_encoding($cadena, "ISO-8859-1", "UTF-8");
		return $cadena;
	}
	
	#TOMA LOS ATRIBUTOS DE OBJETO $LATEX Y LOS ESCRIBE EN UN ARCHIVO CON EXTENCION
	#.TEX Y CON EL NOMBRE $NOMBREARCHIVO "ES UN METODO DE USO INTERNO DE ESTA CLASE"
	#"PRIVATE" ES USADO POR EL METODO GENERAR_LATEX 
	private function generarArchivoLatex($latex, $nombreArchivo) {
		exec('mkdir /var/www/CAPDI/data/temporal/'.$nombreArchivo);
		exec('chmod 777  /var/www/CAPDI/data/temporal/'.$nombreArchivo);
		$archivo = fopen("data/temporal/".$nombreArchivo."/".$nombreArchivo.".tex", 'w+');
		chmod($archivo, 0777);
		fwrite($archivo, $this->toISO($latex->getDocumentclass()));
		fwrite($archivo, $this->toISO($latex->getUsepackage()));
		fwrite($archivo, $this->toISO($latex->getConfiguracion()));
		$documento = $latex->getDocumento();
		fwrite($archivo, $this->toISO($documento['inicio']));
		fwrite($archivo, $this->toISO($latex->getMembrete()));
		
		$encabezado = $latex->getEncabezado();
		fwrite($archivo, $this->toISO($encabezado['inicioEncabezado']));
		fwrite($archivo, $this->toISO($encabezado['nombre']['titulo']));
		fwrite($archivo, $this->toISO($encabezado['nombre']['texto']));
		fwrite($archivo, $this->toISO($encabezado['nombre']['finfila']));
		fwrite($archivo, $this->toISO($encabezado['cedula']['titulo']));
		fwrite($archivo, $this->toISO($encabezado['cedula']['texto']));
		fwrite($archivo, $this->toISO($encabezado['cedula']['finfila']));
		fwrite($archivo, $this->toISO($encabezado['finEncabezado']));
		
		$cargaAcadimica = $latex->getCargaAcademica();
		fwrite($archivo, $this->toISO($cargaAcadimica['encabezado']));
		fwrite($archivo, $this->toISO($cargaAcadimica['inicio']));
		
		#######################################################################
		
		fwrite($archivo, $this->toISO($cargaAcadimica['materiasPregrado']['inicio']));
		foreach ($cargaAcadimica['materiasPregrado']['materias'] AS $clave => $value) {
			fwrite($archivo, $this->toISO($value));
		}
		fwrite($archivo, $this->toISO($cargaAcadimica['materiasPregrado']['totalHoras']['titulo']));
		fwrite($archivo, $this->toISO($cargaAcadimica['materiasPregrado']['totalHoras']['horas']));
		fwrite($archivo, $this->toISO($cargaAcadimica['materiasPregrado']['fin']));
		
		#######################################################################
				
		fwrite($archivo, $this->toISO($cargaAcadimica['materiasPostgrado']['inicio']));
		foreach ($cargaAcadimica['materiasPostgrado']['materias'] AS $clave => $value) {
			fwrite($archivo, $this->toISO($value));
		}
		fwrite($archivo, $this->toISO($cargaAcadimica['materiasPostgrado']['totalHoras']['titulo']));
		fwrite($archivo, $this->toISO($cargaAcadimica['materiasPostgrado']['totalHoras']['horas']));
		fwrite($archivo, $this->toISO($cargaAcadimica['materiasPostgrado']['fin']));
		
		#######################################################################
		
		fwrite($archivo, $this->toISO($cargaAcadimica['cargaTutorias']['inicio']));
		fwrite($archivo, $this->toISO($cargaAcadimica['cargaTutorias']['tesisPregrado']['inicio']));
		foreach ($cargaAcadimica['cargaTutorias']['tesisPregrado']['trabajos'] AS $clave => $value) {
			fwrite($archivo, $this->toISO($value));
		}		
		fwrite($archivo, $this->toISO($cargaAcadimica['cargaTutorias']['tesisPregrado']['fin']));
		fwrite($archivo, $this->toISO($cargaAcadimica['cargaTutorias']['pasantias']['inicio']));
		foreach ($cargaAcadimica['cargaTutorias']['pasantias']['trabajos'] AS $clave => $value) {
			fwrite($archivo, $this->toISO($value));
		}		
		fwrite($archivo, $this->toISO($cargaAcadimica['cargaTutorias']['pasantias']['fin']));
		fwrite($archivo, $this->toISO($cargaAcadimica['cargaTutorias']['tesisPostgrado']['inicio']));
		foreach ($cargaAcadimica['cargaTutorias']['tesisPostgrado']['trabajos'] AS $clave => $value) {
			fwrite($archivo, $this->toISO($value));
		}		
		fwrite($archivo, $this->toISO($cargaAcadimica['cargaTutorias']['tesisPostgrado']['fin']));
		fwrite($archivo, $this->toISO($cargaAcadimica['cargaTutorias']['totalHoras']['titulo']));
		fwrite($archivo, $this->toISO($cargaAcadimica['cargaTutorias']['totalHoras']['horas']));
		fwrite($archivo, $this->toISO($cargaAcadimica['cargaTutorias']['fin']));
		
		#######################################################################
		
		fwrite($archivo, $this->toISO($cargaAcadimica['cargaSC']['inicio']));
		foreach ($cargaAcadimica['cargaSC']['proyectos'] AS $clave => $value) {
			fwrite($archivo, $this->toISO($value));
		}	
		fwrite($archivo, $this->toISO($cargaAcadimica['cargaSC']['totalHoras']['titulo']));
		fwrite($archivo, $this->toISO($cargaAcadimica['cargaSC']['totalHoras']['horas']));
		fwrite($archivo, $this->toISO($cargaAcadimica['cargaSC']['fin']));
		
		#######################################################################
		
		fwrite($archivo, $this->toISO($cargaAcadimica['totalCargaAcademica']['inicio']));
		fwrite($archivo, $this->toISO($cargaAcadimica['totalCargaAcademica']['horas']));
		fwrite($archivo, $this->toISO($cargaAcadimica['totalCargaAcademica']['fin']));
		
		#######################################################################
		
		fwrite($archivo, $this->toISO($cargaAcadimica['fin']));

		#######################################################################
		
		$cargaInvestigacion = $latex->getCargaInvestigacion();
		fwrite($archivo, $this->toISO($cargaInvestigacion['inicio']));
		fwrite($archivo, $this->toISO($cargaInvestigacion['trabajo']));
		fwrite($archivo, $this->toISO($cargaInvestigacion['fin']));
		fwrite($archivo, $this->toISO($cargaInvestigacion['totalCargaAcademica']['inicio']));
		fwrite($archivo, $this->toISO($cargaInvestigacion['totalCargaAcademica']['horas']));
		fwrite($archivo, $this->toISO($cargaInvestigacion['totalCargaAcademica']['fin']));
		
		$cargaExtencion = $latex->getCargaExtencion();
		fwrite($archivo, $this->toISO($cargaExtencion['inicio']));
		fwrite($archivo, $this->toISO($cargaExtencion['trabajo']));
		fwrite($archivo, $this->toISO($cargaExtencion['fin']));
		fwrite($archivo, $this->toISO($cargaExtencion['totalCargaAcademica']['inicio']));
		fwrite($archivo, $this->toISO($cargaExtencion['totalCargaAcademica']['horas']));
		fwrite($archivo, $this->toISO($cargaExtencion['totalCargaAcademica']['fin']));
		
		$cargaAdministrativa = $latex->getCargaAdministrativa();
		fwrite($archivo, $this->toISO($cargaAdministrativa['inicio']));
		foreach ($cargaAdministrativa['trabajo'] AS $clave => $value) {
			fwrite($archivo, $this->toISO($value));
		}
		fwrite($archivo, $this->toISO($cargaAdministrativa['fin']));
		fwrite($archivo, $this->toISO($cargaAdministrativa['totalCargaAcademica']['inicio']));
		fwrite($archivo, $this->toISO($cargaAdministrativa['totalCargaAcademica']['horas']));
		fwrite($archivo, $this->toISO($cargaAdministrativa['totalCargaAcademica']['fin']));
		
		$cargaGremial = $latex->getCargaGremial();
		fwrite($archivo, $this->toISO($cargaGremial['inicio']));
		foreach ($cargaGremial['trabajo'] AS $clave => $value) {
			fwrite($archivo, $this->toISO($value));
		}
		fwrite($archivo, $this->toISO($cargaGremial['fin']));
		fwrite($archivo, $this->toISO($cargaGremial['totalCargaAcademica']['inicio']));
		fwrite($archivo, $this->toISO($cargaGremial['totalCargaAcademica']['horas']));
		fwrite($archivo, $this->toISO($cargaGremial['totalCargaAcademica']['fin']));
		
		$piePagina = $latex->getPiePagina();
		fwrite($archivo, $this->toISO($piePagina['inicio']));
		fwrite($archivo, $this->toISO($piePagina['horas']));
		fwrite($archivo, $this->toISO($piePagina['fin']));
		
		fwrite($archivo, $this->toISO($documento['fin']));
		fclose($archivo);
		exec('chmod -R 777  /var/www/CAPDI/data/temporal/'.$nombreArchivo);
	}
	
	#COMPILA EL ARCHIVO .TEX Y GENERA UN ARCHIVO PDF
	public function generar_pdf($nombreArchivo) {
		exec('latex /var/www/CAPDI/data/temporal/'.$nombreArchivo.'/'.$nombreArchivo.'.tex');
		exec('latex /var/www/CAPDI/data/temporal/'.$nombreArchivo.'/'.$nombreArchivo.'.tex');
		exec('dvips ' . $nombreArchivo . '.dvi -o ' . $nombreArchivo . '.ps');
		exec('ps2pdf '.$nombreArchivo.'.ps');
		exec('cp '.$nombreArchivo.'.pdf'.' /var/www/CAPDI/data/temporal/'.$nombreArchivo);
		exec('chmod 777 /var/www/CAPDI/data/temporal/'.$nombreArchivo.'/'.$nombreArchivo.'.pdf');
		exec('rm '.$nombreArchivo.'*');
	}
	
	public function addSC($servicioComunitario, $cedula, $tabla){
		$validacion = $this->validarSC($servicioComunitario, $cedula, $tabla);
		if($validacion['paso']){
			$DataBase = BD;
			foreach($servicioComunitario AS $clave => $valor)
   				$$clave = $valor;
			$sql = "INSERT INTO " . $tabla .
	               "(cedulaProfesor, cedulaTesista, nombreTutoriado, proyecto, " .
			       "comunidad, fechaInicio, fechaFin)" .
	               " VALUES " .
	               "('".$cedula."', '".$numIdentificacion."', ".
				   "'".$nombres."', '".$proyecto."', ".
				   "'".$comunidad."', '".date($fechaInicio)."', '".date($fechaCulminacion)."')";
			$this->guardar($DataBase, $sql);
			return Array('insercion' => true);
		}else{
			$msgProceso = $validacion['error'];
			return Array('insercion' => false, 'error' => $msgProceso);
		}		
	}
	
	private function validarSC($servicioComunitario, $cedula, $tabla){
		$campos = Array( '01'=>'numIdentificacion',
                    	 '02'=>'nombres',
                    	 '03'=>'proyecto',
                    	 '04'=>'comunidad',
						 '05'=>'fechaInicio',
						 '06'=>'fechaCulminacion'
                   );
        foreach($campos AS $clave => $valor) {
			if($servicioComunitario[$valor] == ""){
				$msgProceso = "No lleno la totalidad de los campos.";
				return Array('paso' => false, 'error' => $msgProceso);
			}	
		}
		if($this->validadTutoriaBD($servicioComunitario['numIdentificacion'], $cedula, $tabla) == false){
			$msgProceso = "El Servicio Comunitario ya esta insertado.";
			return Array('paso' => false, 'error' => $msgProceso);
		}
		return Array('paso' => true);
	}
	
	public function validarInvestigacion($investigacion, $cedula){
		if(($investigacion['programPei'] == '1' || $investigacion['programPpi'] == '1') && 
		$investigacion['actividadDeInvestigacion'] !== ""){
			$DataBase = BD;
			$sql = "SELECT DISTINCT * FROM investigacion WHERE cedulaProfesor = '".$cedula."'";
			$num = $this->numeroRegistros($sql,$DataBase);
			if($num == 1){
				return  Array('validacion' => true, 'existe' => true);
			}else{
				return  Array('validacion' => true, 'existe' => false);
			}
		}else{
			$error = "No lleno la totalidad de los campos";
			return Array('validacion' => false, 'error' => $error);
		}
	}
	
	public function modificarInvestigacion($investigacion, $cedula, $tabla){
			$DataBase = BD;
			foreach($investigacion AS $clave => $valor)
	   			$$clave = $valor;
	   		if(isset($programPpi)){
	   			$totalHoras = 20;
	   			if(!isset($programPei)) $programPei = 0;
	   		}elseif(isset($programPei)){
	   			$totalHoras = 15;
	   			if(!isset($programPpi)) $programPpi = 0;
	   		}
			$sql = "UPDATE investigacion SET actividad = '".$actividadDeInvestigacion."', ppi = '".$programPpi."', 
			pei = '".$programPei."', totalHoras = '".$totalHoras."' WHERE cedulaProfesor = '".$cedula."'";
			$this->guardar($DataBase, $sql);
			return Array('insercion' => true);
	}
	
	public function eliminarInvestigacion($cedula){
		$sql = "DELETE FROM investigacion WHERE cedulaProfesor = '".$cedula."'";
		$DataBase = BD;
		$this->eliminar($sql, $DataBase);
	}
	
	public function vaciar($cedula){
		$DataBase = BD;
		$sql = "DELETE FROM investigacion WHERE cedulaProfesor = '".$cedula."'";
		$this->eliminar($sql, $DataBase);
		$sql = "DELETE FROM extencion WHERE cedulaProfesor = '".$cedula."'";
		$this->eliminar($sql, $DataBase);
		$sql = "DELETE FROM cargaAdministrativa WHERE cedulaProfesor = '".$cedula."'";
		$this->eliminar($sql, $DataBase);
		$sql = "DELETE FROM cargaGremial WHERE cedulaProfesor = '".$cedula."'";
		$this->eliminar($sql, $DataBase);
		$sql = "DELETE FROM materiasPostgrado WHERE cedulaProfesor = '".$cedula."'";
		$this->eliminar($sql, $DataBase);
		$sql = "DELETE FROM materiasPregrado WHERE cedulaProfesor = '".$cedula."'";
		$this->eliminar($sql, $DataBase);
		$sql = "DELETE FROM pasantias WHERE cedulaProfesor = '".$cedula."'";
		$this->eliminar($sql, $DataBase);
		$sql = "DELETE FROM tesisPostgrado WHERE cedulaProfesor = '".$cedula."'";
		$this->eliminar($sql, $DataBase);
		$sql = "DELETE FROM tesisPregrado WHERE cedulaProfesor = '".$cedula."'";
		$this->eliminar($sql, $DataBase);
		$sql = "DELETE FROM servicioComunitario WHERE cedulaProfesor = '".$cedula."'";
		$this->eliminar($sql, $DataBase);
	}

	public function eliminarMateria($cedula, $posicion, $tabla){
		$DataBase = BD;
		$sql = "SELECT DISTINCT * FROM " . $tabla . " WHERE "; 
		$sql = $sql."cedulaProfesor = '".$cedula."' ";
		$array = $this->consultar($sql,$DataBase);
		$materia = $array[$posicion]['nombreMateria'];
		$sql = "DELETE FROM ".$tabla." WHERE cedulaProfesor = '".$cedula."' and nombreMateria = '".$materia."'";
		$this->eliminar($sql, $DataBase);
	}
	
	public function eliminarTutoria($cedula, $posicion, $tabla){
		$DataBase = BD;
		$sql = "SELECT DISTINCT * FROM " . $tabla . " WHERE "; 
		$sql = $sql."cedulaProfesor = '".$cedula."' ";
		$array = $this->consultar($sql,$DataBase);
		$cedulaTesista = $array[$posicion]['cedulaTesista'];
		$sql = "DELETE FROM ".$tabla." WHERE cedulaProfesor = '".$cedula."' and cedulaTesista = '".$cedulaTesista."'";
		$this->eliminar($sql, $DataBase);
	}
	
	public function eliminarCargoAdministrativo($cedula, $posicion){
		$DataBase = BD;
		$sql = "SELECT DISTINCT * FROM cargaAdministrativa WHERE cedulaProfesor = '".$cedula."' ";
		$array = $this->consultar($sql,$DataBase);
		$idCargo = $array[$posicion]['idCargo'];
		$sql = "DELETE FROM  cargaAdministrativa WHERE cedulaProfesor = '".$cedula."' and idCargo = '".$idCargo."'";
		$this->eliminar($sql, $DataBase);
	}
	
	public function eliminarCargoGremial($cedula, $posicion){
		$DataBase = BD;
		$sql = "SELECT DISTINCT * FROM  cargaGremial WHERE cedulaProfesor = '".$cedula."' ";
		$array = $this->consultar($sql,$DataBase);
		$cargo = $array[$posicion]['cargo'];
		$sql = "DELETE FROM   cargaGremial WHERE cedulaProfesor = '".$cedula."' and cargo = '".$cargo."'";
		$this->eliminar($sql, $DataBase);
	}
	
 	public function addInvestigacion($investigacion, $cedula){
		$DataBase = BD;
		foreach($investigacion AS $clave => $valor)
   			$$clave = $valor;
   		if(isset($programPpi)){
   			$totalHoras = 20;
   			if(!isset($programPei)) $programPei = 0;
   		}elseif(isset($programPei)){
   			$totalHoras = 15;
   			if(!isset($programPpi)) $programPpi = 0;
   		}
		$sql = "INSERT INTO investigacion ".
               "(cedulaProfesor, actividad, ppi, pei, totalHoras)" .
	           " VALUES " .
	           "('".$cedula."', '".$actividadDeInvestigacion."',".
			   "'".$programPpi."', '".$programPei."', '".$totalHoras."')";
		$this->guardar($DataBase, $sql);
		return Array('insercion' => true);
	}
	
	public function validarExtencion($extencion, $cedula){
		if(!empty($extencion['actividads']) && !empty($extencion['totalDeHorasAprobadas']) 
		&& !empty($extencion['numeroDeOficio'])){
			$DataBase = BD;
			$sql = "SELECT DISTINCT * FROM extencion WHERE cedulaProfesor = '".$cedula."'";
			$num = $this->numeroRegistros($sql,$DataBase);
			if($num == 1){
				return  Array('validacion' => true, 'existe' => true);
			}else{
				return  Array('validacion' => true, 'existe' => false);
			}
		}else{
			$error = "No lleno la totalidad de los campos";
			return Array('validacion' => false, 'error' => $error);
		}
	}
	
	public function modificarExtencion($extencion, $cedula){
		$DataBase = BD;
		foreach($extencion AS $clave => $valor)
   			$$clave = $valor;
		$sql = "UPDATE extencion SET actividad = '".$actividads."', totalHoras = '".$totalDeHorasAprobadas."', 
		numOficio = '".$numeroDeOficio."' WHERE cedulaProfesor = '".$cedula."'";
		$this->guardar($DataBase, $sql);
		return Array('insercion' => true);
	}
	
	public function eliminarExtencion($cedula){
		$sql = "DELETE FROM extencion WHERE cedulaProfesor = '".$cedula."'";
		$DataBase = BD;
		$this->eliminar($sql, $DataBase);
	}
	
	public function addExtencion($extencion, $cedula){
		$DataBase = BD;
		foreach($extencion AS $clave => $valor)
   			$$clave = $valor;
   		$sql = "INSERT INTO extencion ".
               "(cedulaProfesor, actividad, totalHoras, numOficio)" .
	           " VALUES " .
	           "('".$cedula."', '".$actividads."',".
			   "'".$totalDeHorasAprobadas."', '".$numeroDeOficio."')";
		$this->guardar($DataBase, $sql);
		return Array('insercion' => true);
	}
	
	public function addCargaGremial($cargaGremial, $cedula){
		if(!empty($cargaGremial['cargos']) && !empty($cargaGremial['totalHoras'])){
			$cargo = $cargaGremial['cargos'];
			$totalHoras = $cargaGremial['totalHoras'];
			$existe = $this->validarCargoGremial($cargo, $cedula);
			if($existe){
				$error = "El cargo que intenta insertar ya existe entre sus cargos";
				return Array('insercion' => false, 'error' => $error);
			}else{
				$DataBase = BD;
				$sql = "INSERT INTO cargaGremial ".
               "(cedulaProfesor, cargo, totalHoras)" .
	           " VALUES " .
	           "('$cedula', '$cargo', '$totalHoras')";
				$this->guardar($DataBase, $sql);
				return Array('insercion' => true,);
			}
		}else{
			$error = "Debe llenar la totalidad de los datos";
			return Array('insercion'=> false,'error'=> $error);
		}
	}
	
	private function  validarCargoGremial($cargo, $cedula){
			$DataBase = BD;
			$sql = "SELECT DISTINCT * FROM cargaGremial WHERE cedulaProfesor = '$cedula' and cargo = '$cargo'";
			$num = $this->numeroRegistros($sql,$DataBase);
			if($num == 1){
				return  true;
			}else{
				return  false;
			}
	}
	
	public function addCargaAdministrativa($cargaAdministrativa, $cedula){
		if(!empty($cargaAdministrativa['cargaAdministrativa'])){
			$cargo = $cargaAdministrativa['cargaAdministrativa'];
			$existe = $this->validarCargaAdministrativa($cargo, $cedula);
			if($existe){
				$error = "El cargo que intenta insertar ya existe entre sus cargos";
				return Array('insercion' => false, 'error' => $error);
			}else{
				$DataBase = BD;
				$sql = "INSERT INTO cargaAdministrativa ".
               "(cedulaProfesor, idCargo)" .
	           " VALUES " .
	           "('$cedula', '$cargo')";
				$this->guardar($DataBase, $sql);
				return Array('insercion' => true,);
			}
		}else{
			$error = "Debes Seleccionar una Actividad para Insertar";
			return Array('insercion' => false, 'error' => $error);
		}
		
	}
	
	private function  validarCargaAdministrativa($cargo, $cedula){
			$DataBase = BD;
			$sql = "SELECT DISTINCT * FROM cargaAdministrativa WHERE cedulaProfesor = '$cedula' and idCargo = '$cargo'";
			$num = $this->numeroRegistros($sql,$DataBase);
			if($num == 1){
				return  true;
			}else{
				return  false;
			}
	}
	
	#RETORNA EL ARRAY de UNA CONSULTA A LA BD
	public function consultar($sql,$DataBase){
		$objConector = new Conectar($DataBase);	
		if(!$objConector->conectarGbd())
			die(APPS_ERROR_CONECTAR.' LINEA: '.__LINE__.' ARCHIVO: '.__FILE__);
		if(!$objConector->seleccionarBd())
			die(APPS_ERROR_BD.' LINEA: '.__LINE__.' ARCHIVO: '.__FILE__);
		$objConector->iniciarTransaccion();
		$objConector->ejecutarQuery($sql);
		$objConector->culminarTransaccion();
		$objConector->obtenerArrayRecords();
		$array = $objConector->getFilas();
		$objConector->closeConeccion();
		return $array;
	}
	
	public  function eliminar($sql,$DataBase){
		$objConector = new Conectar($DataBase);	
		if(!$objConector->conectarGbd())
			die(APPS_ERROR_CONECTAR.' LINEA: '.__LINE__.' ARCHIVO: '.__FILE__);
		if(!$objConector->seleccionarBd())
			die(APPS_ERROR_BD.' LINEA: '.__LINE__.' ARCHIVO: '.__FILE__);
		$objConector->iniciarTransaccion();
		$objConector->ejecutarQuery($sql);
		$objConector->culminarTransaccion();
	}
	
	#RETORNA EL NUMERO DE REGISTROS EN LA CONSULTA
	public  function numeroRegistros($sql,$DataBase){
		$objConector = new Conectar($DataBase);	
		if(!$objConector->conectarGbd())
			die(APPS_ERROR_CONECTAR.' LINEA: '.__LINE__.' ARCHIVO: '.__FILE__);
		if(!$objConector->seleccionarBd())
			die(APPS_ERROR_BD.' LINEA: '.__LINE__.' ARCHIVO: '.__FILE__);
		$objConector->iniciarTransaccion();
		$objConector->ejecutarQuery($sql);
		$objConector->culminarTransaccion();
		$numeroRegistro = $objConector-> obtenerNumRecords();
		$objConector->closeConeccion();
		return $numeroRegistro;
	}
	
	#EJECUTA UN INSERT INSERT SQL EN LA BD
	public function guardar($DataBase,$sql){
        $objConector = new Conectar($DataBase);
        if(!$objConector->conectarGbd())
        die(APPS_ERROR_CONECTAR.' LINEA: '.__LINE__.' ARCHIVO: '.__FILE__);
        if(!$objConector->seleccionarBd())
        die(APPS_ERROR_BD.' LINEA: '.__LINE__.' ARCHIVO: '.__FILE__);
        $objConector->iniciarTransaccion();
        $objConector->ejecutarQuery($sql);
        $objConector->culminarTransaccion();
        $objConector->closeConeccion();

    }

    #QUITA LOS ASENTOS DE UNA CADENA $TEXT
	public function quitarAcentos($text) {
		$text = htmlentities($text, ENT_QUOTES, 'UTF-8');
		$text = strtolower($text);
		$patron = array (
			'/[\., ]+/' => '-',
			'/&agrave;/' => 'a',
			'/&egrave;/' => 'e',
			'/&igrave;/' => 'i',
			'/&ograve;/' => 'o',
			'/&ugrave;/' => 'u',
			'/&aacute;/' => 'a',
			'/&eacute;/' => 'e',
			'/&iacute;/' => 'i',
			'/&oacute;/' => 'o',
			'/&uacute;/' => 'u',
			'/&acirc;/' => 'a',
			'/&ecirc;/' => 'e',
			'/&icirc;/' => 'i',
			'/&ocirc;/' => 'o',
			'/&ucirc;/' => 'u',
			'/&atilde;/' => 'a',
			'/&etilde;/' => 'e',
			'/&itilde;/' => 'i',
			'/&otilde;/' => 'o',
			'/&utilde;/' => 'u',
			'/&auml;/' => 'a',
			'/&euml;/' => 'e',
			'/&iuml;/' => 'i',
			'/&ouml;/' => 'o',
			'/&uuml;/' => 'u',
			'/&auml;/' => 'a',
			'/&euml;/' => 'e',
			'/&iuml;/' => 'i',
			'/&ouml;/' => 'o',
			'/&uuml;/' => 'u',
			'/&aring;/' => 'a',
			'/&ntilde;/' => 'n'			
		);
		$text = preg_replace(array_keys($patron), array_values($patron), $text);
		return $text;
	}
    
	#DESTRUCTOR
	public function __destruct() {
	}

}

?>